﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DiscoveryLogic.Workflows.Components.Markov.MaxEnt
{
    /// <summary>
    /// Object that compresses events in memory and performs feature selection.
    /// </summary>
    public interface ITrainingDataIndexer
    {

        /// <summary>
        /// Gets an array of context data calculated from the training data.
        /// </summary>
        /// <returns>
        /// Array of integer arrays, each containing the context data for an event.
        /// </returns>
        int[][] GetContexts();

        /// <summary>
        /// Gets an array indicating how many times each event is seen.
        /// </summary>
        /// <returns>
        /// Integer array with event frequencies.
        /// </returns>
        int[] GetNumTimesEventsSeen();

        /// <summary>
        /// Gets an outcome list.
        /// </summary>
        /// <returns>
        /// Integer array of outcomes.
        /// </returns>
        int[] GetOutcomeList();

        /// <summary>
        /// Gets an array of predicate labels.
        /// </summary>
        /// <returns>
        /// Array of predicate labels.
        /// </returns>
        string[] GetPredicateLabels();

        /// <summary>
        /// Gets an array of outcome labels.
        /// </summary>
        /// <returns>
        /// Array of outcome labels.
        /// </returns>
        string[] GetOutcomeLabels();
    }
}
